﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _1.Presentacion.Utilidades;
using _2.Logica.Inventario;
using _4.Modelado.Inventario;
using _1.Presentacion.Principal;

namespace _1.Presentacion.Modulo_Inventario
{
    public partial class Gestionar_Bodega : Päntalla_Base
    {
        public Gestionar_Bodega()
        {
            InitializeComponent();
        }

        private void Gestionar_Bodega_Load(object sender, EventArgs e)
        {
            CargaGridBodega();
            Validaciones.CargarUsuarioLogueado(lbl_Usuario, lbl_Fecha);
        }
      
        private void CargaGridBodega()
        {
            try
            {
                var logica = new BodegaL();

                List<Bodega> listaBodega = logica.BodegasConsultar();
                //Recorre la lista de Usuarios para asignar a cada celda del Datagrid
                //Los valores devueltos por la consulta
                dgvBodega.Rows.Clear();
                for (int i = 0; i < listaBodega.Count; i++)
                {
                    dgvBodega.Rows.Add();
                    dgvBodega.Rows[i].Cells[0].Value = listaBodega[i].iPK_Bodega;
                    dgvBodega.Rows[i].Cells[1].Value = listaBodega[i].sBodUbicacion;

                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar la lista de Áreas " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }


        private void P_Limpiar()
        {
            txtBodUbicacion.Clear();
            txtPKBodega.Text = "0";
        }

        private void btnGuardar_Click_1(object sender, EventArgs e)
        {
            try
            {

                int cantErrores = 0;

                Validaciones.Validar(this, errorProvider1, ref cantErrores);

                if (cantErrores == 0)
                {
                    #region Guardar Bodega

                    var obj = new Bodega();
                    obj.sBodUbicacion = txtBodUbicacion.Text;
                    obj.iPK_Bodega = Convert.ToInt32(txtPKBodega.Text);
                    var logica = new BodegaL();
                    logica.BodegaGuardar(obj);
                    CargaGridBodega();
                    MessageBox.Show("El registro ha sido guardado", "Transacción", MessageBoxButtons.OK);
                    P_Limpiar();

                    #endregion

                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al guardar los datos" + exc, "Error", MessageBoxButtons.OKCancel);
            }

        } 

        private void btnNuevo_Click_1(object sender, EventArgs e)
        {
            P_Limpiar();
            txtBodUbicacion.Focus();
        }

        private void btnHom_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

        private void txtBodUbicacion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnGuardar_Click_1(sender, e);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgvBodega.RowCount > 0)
                {
                    int indiceFila = dgvBodega.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvBodega[1, indiceFila].Value.ToString();


                  

                    DialogResult r = MessageBox.Show("Desea eliminar el área: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        #region Elimina Bodega
                            var obj = new Bodega();
                            obj.iPK_Bodega = Convert.ToInt32(dgvBodega.Rows[indiceFila].Cells[0].Value);

                            var logica = new BodegaL();
                            logica.BodegaEliminar(obj);
                            CargaGridBodega();
                            MessageBox.Show("El registro ha sido eliminado", "Transacción", MessageBoxButtons.OK);
                            P_Limpiar();
                        #endregion

                    }

                   
                }
            }
            catch (Exception exc)
            {

                if (exc.Message.Contains("The DELETE statement conflicted with the REFERENCE constraint"))
                {
                    MessageBox.Show("La bodega tiene datos asociados, asegúrese de que no tenga datos asociados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("No se pudo eliminar el registro " + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

       

       
        private void dgvBodega_DoubleClick(object sender, EventArgs e)
        {
            int indicefila = dgvBodega.SelectedCells[0].RowIndex;
            txtPKBodega.Text = dgvBodega.Rows[indicefila].Cells[0].Value.ToString();
            txtBodUbicacion.Text = dgvBodega.Rows[indicefila].Cells[1].Value.ToString();
            txtBodUbicacion.Focus();
        }

      
    }
}
